# shellcheck shell=sh
# shellcheck disable=SC2034
# shellcheck disable=SC2059

# ferreus_orbit Plugins for Dell "Poweredge R720xd|Poweredge R730xd"

fo_get_sorted_name(){
  id=$(fo_get_id)
  if [ "$USE_FO_NAME" -eq 1 ] || [ "$1" = "-f" ]; then
    echo "Disk${id}"
  else
    echo "sd$(fo_get_dev_letter "${id}")"
  fi
}

fo_get_did(){
  id=$(fo_get_id)
  if [ "$id" -eq 12 ];then
    jq -r ".[\"TOPOLOGY\"]|select(.!=null)[]|select(.DG==0)|select(.Type==\"DRIVE\").DID" "${FO_CACHE_FILE_STORCLI}"
  else
    echo "$id"
  fi
}

fo_get_id(){
  SHORTNAME=$(basename "${DEVNAME}")
  # shellcheck disable=SC2012
  ls "/sys/block/${SHORTNAME}/device/scsi_generic/" |awk -F 'sg' '{print $2}'
}

fo_get_kname(){
  did=$(echo "$2"|cut -d/ -f4|cut -d's' -f2)
  if [ "$fo_raid_card" = "PERC H740P Mini " ]; then
    [ "$did" -ge 12 ] && did=12
    ls "/sys/class/scsi_generic/sg${did}/device/block/"
  elif  [ "$fo_raid_card" = "Dell HBA330 Mini" ]; then
    ls "/sys/class/scsi_generic/sg${did}/device/block/"
  else
    logger -t "udev" "RAID Card unknown"
    echo "RAID Card unknown" >&2
    kill -SIGPIPE "$$"
  fi
}

FO_DISPOSITION="""
HDD disposition (Front Panel)
__{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
|{Disk0}|{Disk3}|{Disk6}|{Disk9}|
|{SN_Disk0}|{SN_Disk3}|{SN_Disk6}|{SN_Disk9}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk1}|{Disk4}|{Disk7}|{Disk10}|
|{SN_Disk1}|{SN_Disk4}|{SN_Disk7}|{SN_Disk10}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk2}|{Disk5}|{Disk8}|{Disk11}|
|{SN_Disk2}|{SN_Disk5}|{SN_Disk8}|{SN_Disk11}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯

HDD disposition (Rear Panel):
__{UNDERSCORE}___{UNDERSCORE}__
|{Disk12}|{Disk13}|
|{SN_Disk12}|{SN_Disk13}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯
"""

FO_TEXTILE="""

h3. HDD disposition (Front Panel)

|{Disk0}|{Disk3}|{Disk6}|{Disk9}|
|{Disk1}|{Disk4}|{Disk7}|{Disk10}|
|{Disk2}|{Disk5}|{Disk8}|{Disk11}|

h3. HDD disposition (Rear Panel):

|{Disk12}|{Disk13}|
"""

fo_load_storcli

fo_raid_card=$(jq -r '."Product Name"|select(.!=null)' "${FO_CACHE_FILE_STORCLI}")
if [ "$fo_raid_card" = "PERC H740P Mini " ]; then
      FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s%SN_Disk13%SN2_Disk12%g")
      FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s%Disk13%Disk12%g")
      FO_TEXTILE=$(printf "${FO_TEXTILE}"|sed "s%Disk13%Disk12_2%g")
fi
